package com.sl.aiot.util.exception;


import com.sl.aiot.exception.code.BaseExceptionCode;

/**
 * 异常编码
 *
 * @author pangd
 * @date 2017-12-13 16:22
 */
public enum BizExceptionCode implements BaseExceptionCode {

    /**
     * 异常码信息
     */
    QRCODE_NO_KEY_ERROR(1000,"请求二维码KEY不能为空"),
    QRCODE_TIMEOUT_ERROR(1001,"二维码已过期"),
    QRCODE_USER_NOT_FOUND(1002,"登录账户有误"),
    APP_LOGIN_TIMEOUT_ERROR(1003,"登录超时!"),
    APP_CONFIRM_QRCODE_TIMEOUT_ERROR(1004,"确认二维码超时!"),
    APP_COMIT_APPFROM_TIMEOUT_ERROR(1005,"提交合作咨询超时!"),
    APP_LIST_TIMEOUT_ERROR(1006,"获取应用信息超时!"),
    MATCH_PHONE_ERROR(1007,"您输入的电话格式有误!"),
    MATCH_EMAIL_ERROR(1008,"您输入的邮箱格式有误!"),

    DATA_SAVE_ERROR(2000, "新增数据失败"),
    DATA_UPDATE_ERROR(2001, "修改数据失败"),
    TOO_MUCH_DATA_ERROR(2002, "批量新增数据过多"),
    //数据字典
    DICT_DEL_NO_ERROR(3000,"您还没选择删除的字典类型!"),
    DICT_HAS_ERROR(3001,"字典[{}]已经存在，请勿重复创建"),
    DICT_NO_EXITS_ERROR(3002,"字典不存在或已被删除！"),

    //行业分类
    INDUSTRY_SAVE_ERROR(3100,"请先输入保存行业信息"),
    INDUSTRY_HAS_NAME_ERROR(3101,"您添加行业名称已经存在，不能重复添加!"),
    INDUSTRY_HAS_CODE_ERROR(3102,"您添加行业编码已经存在，不能重复添加!"),
    INDUSTRY_P_NO_ERROR(3103,"读取父行业数据有误!"),
    INDUSTRY_CHILD_OVER_ERROR(3104,"行业数据只能添加三级数据！"),
    INDUSTRY_DEL_HAS_CHILD_ERROR(3105,"您删除行业%s,已经配置下级不允许删除!"),

    INDUSTRY_TYPE_ERROR(3106,"您添加行业分类类型选择有误!%s"),
    INDUSTRY_DEL_ERROR(3107,"您还没选择需要删除行业分类!"),
    INDUSTRY_HAS_P_ERROR(3108,"您所删除的行业分类存在子数据,不能删除!"),
    INDUSTRY_ROOT_ERROR(3109,"行业分类根节点不能删除!"),
    INDUSTRY_OTHER_ERROR(3110,"行业分类其他为系统默认分类不能删除!"),

    INDUSTRY_ROOT_BIG_ERROR(3111,"您所修改行业分类为顶层，只能设定为大类!"),

    //行政区域
    AREA_SAVE_ERROR(3200,"保存行政区域数据为空,执行保存失败!"),
    AREA_P_NO_ERROR(3201,"读取添加父节点数据有误!"),
    AREA_TYPE_ERROR(3202,"您添加行政区域类型选择有误!"),
    AREA_DEL_ERROR(3203,"您还没选择需要删除行政区域!"),
    AREA_HAS_P_ERROR(3204,"您所删除的行政区域存在子数据,不能删除!"),
    AREA_ROOT_ERROR(3205,"行政区域根节点不能删除!"),
    AREA_OTHER_ERROR(3206,"行政区域其他为系统默认分类不能删除!"),
    AREA_NO_ROOT_ERROR(3207,"还没初始化行政区域根节点，请联系系统管理员!"),
    AREA_READ_ERROR(3208,"读取需要导入数据节点失败，请检查您选择行政节点是否正确!"),
    AREA_IMPORT_REGION_ERROR(3209,"您所选择节点为区域,不能执行导入!"),

    //user 相关
    USER_NOT_FOUND(10000,"用户读取失败!"),
    USER_MENU_NOT_FOUND(10001,"用户授权菜单读取失败!"),
    USER_NOT_DELETE(10002,"用户账号不能直接删除,只能执行停用!"),
    USER_ACTIVATE_ERROR(10003,"用户还没激活"),
    USER_LOCK_ERROR(10004,"用户已经锁定,请联系管理员!"),
    USER_ACCOUNT_EMPTY_ERROR(10005,"账号不能为空!"),
    USER_PWD_EMPTY_ERROR(10006,"密码不能为空!"),
    USER_CRE_NOT_FOUND(10007,"用户凭证读取失败!"),
    USERGROUP_ADD_NULL(10008,"请输入用户分组信息！"),
    USERGROUP_NAME_EXIT(10009,"该用户组已存在，请使用其他名称!"),
    USERGROUP_DEL_NULL(10010,"请先选择删除用户分组!"),
    USERGROUP_HAS_USERS(10011,"用户分组%s存在组员不能执行删除!"),
    USERGROUP_AUTH_USER_NULL(10012,"请先选择授权用户信息!"),
    USERGROUP_AUTH_USERGROUP_NULL(10013,"请先选择授权用户组!"),
    USERGROUP_CACEL_AUTH_USER_NULL(10014,"请先选择取消用户信息!"),
    USER_SAVE_NOT_FOUND(10015,"请先填写新增用户信息!"),
    USER_PHONE_NOT_FOUND(10016,"电话号码不能为空，请先填写!"),
    USER_UPDATE_NOT_FOUND(10017,"请先填写修改用户信息!"),
    USER_PERMISSION_NOT_FOUND(10018,"用户授权信息不能为空!"),
    USER_HAS_TENANT_ERROR(10019,"您添加的用户已经存在!"),
    USER_AUTH_FOLD_FUNCTION_ERROR(10020,"请先选择授权模块!"),
    USER_DEL_NOT_FOUND(10021,"请先选择删除用户数据!"),
    USER_INFO_TENANT_UPDATE_NOT_FOUND(10022,"读取用户详细信息失败!"),
    USER_INFO_TENANT_MATCH_PHONE_FOUND(10023,"您输入的电话格式有误!"),
    USER_INFO_TENANT_MATCH_EMAIL_FOUND(10024,"您输入的邮箱格式有误!"),
    USER_ACCOUT_SAVE_NOT_FOUND(10025,"请先填写新增账号信息!"),
    USER_ACCOUT_HAS_ERROR(10026,"您新增账号已经存在,不能重复添加!"),
    USER_LOCK_NOT_FOUND_ERROR(10027,"您锁定账号信息读取失败!"),
    USER_ACCOUT_ACTIVATE_ERROR(10028,"您所删除账号:%s,已经激活无法执行删除!"),
    USER_INFO_TENANT_PHONE_EXIT_ERROR(10029,"您所输入的电话号码已经存在用户,不能重复!"),

    //角色相关
    ROLE_USER_CURRY_PARAM_ERROR(20000,"获取角色当前人参数有误!"),
    ROLE_USER_HAS_ERROR(20001,"该用户还没配置角色，读取数据失败!"),
    SUPER_ROLE_HAS_ERROR(20002,"初始化总管理员角色失败，没能找到超管角色!"),
    ROLE_DEL_IDS_ERROR(20003,"您还没选择需要删除角色!"),
    ROLE_NOT_FOUND(20004,"角色读取失败!"),
    ROLE_USER_NO_USERID(20005,"您还没选择需要配置用户信息,无法执行配置操作!"),
    ROLE_USER_DEL_IDS_ERROR(20006,"您还没选择删除的用户，无法执行删除操作!"),
    ROLE_SYSTEM_ADMIN_HAS_ERROR(20007,"系统总管理员角色已经存在，不能重复添加!"),
    ROLE_NAME_HAS_ERROR(20008,"您所添加的角色已经存在，不能重复添加!"),
    ROLE_DEL_HAS_PERMISSIONS_ERROR(20009,"您删除角色%s,已经配置权限不允许删除!"),
    ROLE_DEL_HAS_USERS_ERROR(20010,"您删除角色%s,已经配置用户不允许删除!"),
    ROLE_AUTH_NOT_FOUND_ERROR(20011,"您还没选择授权的角色,请先选择授权角色!"),
    ROLE_CANCEL_AUTH_USER_NO_USERID(20012,"您还没选择取消角色权限的用户，请先选择取消用户!"),
    ROLE_NORMAL_NO_USERID(20013,"您所删除的角色是系统管理员角色,无法执行删除!"),
    ROLE_NAME_HAS_NUMBER_ERROR(20014,"角色名称不能包含数字!"),
    //组织相关
    ORG_CHECK_ERROR(30000,"组织名称已经存在!"),
    ORG_HASE_ROLE_ERROR(30001,"您所选择删除的组织中存在角色配置，无法删除!"),
    ORG_HASE_USER_ERROR(30002,"您所选择删除的组织中存在用户配置,无法删除!"),
    ORG_TYPE_ERROR(30003,"不能在部门下级创建组织!"),
    ORG_DEL_IDS_ERROR(30004,"您还没选择删除组织!"),
    ORG_ROLE_NO_ERROR(30005,"配置角色的组织不能为空"),

    //jwt token 相关 start
    JWT_BASIC_INVALID(40000, "无效的基本身份验证令牌"),
    JWT_TOKEN_EXPIRED(40001, "会话超时，请重新登录"),
    JWT_SIGNATURE(40002, "不合法的token，请认真比对 token 的签名"),
    JWT_ILLEGAL_ARGUMENT(40003, "缺少token参数"),
    JWT_GEN_TOKEN_FAIL(40004, "生成token失败"),
    JWT_PARSER_TOKEN_FAIL(40005, "解析用户身份错误，请重新登录！"),
    JWT_USER_INVALID(40006, "用户名或密码错误"),
    JWT_USER_ENABLED(40007, "用户已经被禁用,请联系管理员！"),
    JWT_OFFLINE(40008, "您已在另一个设备登录！"),
    JWT_NOT_LOGIN(40009, "登录超时，请重新登录！"),
    JWT_PASSWORD_INVALID(40010,"密码验证失败!"),
    JWT_PASSWORD_EXPIRED(40011,"用户密码已过期，请修改密码或者联系管理员重置!"),
    JWT_PASSWORD_ERROR(40014,"密码连续输错次数已达到{}次,用户已被锁定!"),
    JWT_REFRESH_TOKEN_INVALID(40012,"无效刷新令牌"),
    JWT_REFRESH_TOKEN_USER_INVALID(40013,"刷新令牌无效，无法加载用户信息"),
    JWT_USERCRT_INVALID(40014, "用户还没设置密码信息"),
    JWT_USER_NAME_INVALID(40015, "用户名错误"),
    //jwt token 相关 end

    //应用 相关
    APPLICATION_CLIENT_INVALID(50000,"请填写正确的客户端ID或者客户端秘钥"),
    APPLICATION_FORBIDDEN(50001,"客户端[%s]已被禁用"),
    APPLICATION_TENANT_NO_ERROR(50002,"您还没选择绑定的应用!"),
    APPLICATION_HAS_MENU_ERROR(50003,"应用已绑定菜单，无法删除应用!"),
    APPLICATION_CODE_REPEAT_ERROR(50004,"应用编码已经存在，请检查您输入的编码！"),
    APPLICATION_DEL_NOTFOUND_ERROR(50005,"请先选择要删除应用信息!"),
    APPLICATION_DEL_HAS_FEATURES_ERROR(50006,"您删除应用%s,已经配置菜单功能不允许删除!"),
    APPLICATION_TENANT_REL_DEL_NULL(50007,"请先选择删除应用授权信息!"),
    APPLICATION_FORM_NULL(50008,"您还没填写合作咨询信息!"),
    APPFEATURES_ADD_NULL(50011,"请输入新增应用模块信息！"),
    APPFEATURES_NAME_HAS_THE_SAME(50013,"已经存在应用模块,不能重复!"),
    APPFEATURES_APPLICATION_IS_NULL(50014,"模块所选的应用有误,请检查您所选的应用！"),
    APPFEATURES_PARENT_NULL(50015,"读取上级模块有误!"),
    APPFEATURES_TYPE_ERROR(50016,"您添加模块层次选择有误!%s"),
    APPFEATURES_UPDATE_NULL(50017,"请输入修改应用模块信息！"),
    APPFEATURES_PARENT_TYPE(50018,"顶层模块只能选择大类,请确认您所选的类型!"),
    APPFEATURES_DEL_NOTFOUND_ERROR(50019,"请先选择要删除模块信息!"),
    APPFEATURES_DEL_HAS_FUNCTIONS_ERROR(50020,"您删除模块%s,已经配置功能不允许删除!"),
    ACTIONS_SAVE_NULL_ERROR(50021,"请先填写功能类别数据！"),
    ACTIONS_CODE_NAME_EXIT_ERROR(50022,"功能分类已经存储,不能重复添加!"),
    ACTIONS_DEL_NULL_ERROR(50023,"请先输入删除功能分类！"),
    FUNCTION_SAVE_NULL_ERROR(50024,"请先输入新增菜单信息"),
    FUNCTION_SAVE_NAME_EXIT_ERROR(50025,"新增菜单已经存在，不能重复添加!"),
    FUNCTION_DEL_NULL_ERROR(50026,"请选择需要删除菜单！"),
    FUNCTION_HAS_PERMISSION_ERROR(50027,"您所删除的菜单%s已经存在授权信息，无法执行删除!"),
    APPFEATURES_HAS_CLID_OVER(50028,"您所添加下级超过限制,只能添加4层级!"),
    APPFEATURES_DEL_HAS_CHILD_ERROR(50029,"您删除模块%s,已经配置下级不允许删除!"),
    FUNCTION_HAS_CLID_OVER(50030,"您所添加下级超过限制,只能添加3层级!"),
    FUNCTION_DEL_HAS_CHILD_ERROR(50031,"您删除菜单功能%s,已经配置下级不允许删除!"),
    FUNCTION_UPDATE_NAME_EXIT_ERROR(50032,"您所修改菜单名已经存在，不能重复!"),
    OPERATIONS_SAVE_NULL_ERROR(50033,"请先输入需要保存的功能!"),
    OPERATIONS_FUNCTIONS_NULL_ERROR(50034,"功能对应菜单信息读取有误!"),
    OPERATIONS_FUNCTIONS_SAVE_ERROR(50035,"您增加的功能已经存在,编码不能重复!"),
    OPERATIONS_UPDATE_ERROR(50036,"您所修改的功能编码有误，无法读取!"),
    OPERATIONS_DEL_NULL_ERROR(50037,"请先传入删除的按钮信息！"),
    FUNCTION_ORDER_UPDATE_ERROR(50038,"请先输入需要更新顺序模块菜单信息！"),
    APPLICATION_NAME_REPEAT_ERROR(50039,"应用名称已经存在，请检查您输入的名称！"),

    //租户相关
    TENANT_NOT_FOUND(60000,"企业租户信息不存在!"),
    TENANT_FORBIDDEN(60001,"企业租户不可用,已经锁定!"),
    TENANT_EXPIRED(60002,"企业租户服务已到期!"),
    TENANT_APPLICATION_NOT_FOUND(60003,"企业租户没有关联应用数据!"),
    TENANT_CODE_ERROR(60004,"租户编码重复无法执行保存!"),
    TENANT_APPROVAL_ERROR(60005,"租户已审批，无法执行审批操作!"),
    TENANT_REFUSE_ERROR(60006,"租户非待审批状态，无法执行拒绝操作!"),
    TENANT_DATA_TYPE_ERROR(60007,"您配置的租户模式:{}不可用"),
    TENANT_INIT_ERROR(60008,"租户还没审批,无法执行初始化操作!"),
    TENANT_RESET_ERROR(60009,"租户还没初始化,无法执行重置操作!"),
    TENANT_CLEAR_ERROR(60010,"租户还没初始化,无法执行清除操作!"),
    TENANT_USER_TENANTCODENULL_ERROR(60011,"请选择您要配置的租户信息"),
    TENANT_USER_USERCODENULL_ERROR(60012,"请选择您要配置的用户信息"),
    TENANT_USER_HAS_ERROR(60013,"该用户已绑定了该租户，无法再次绑定!"),
    TENANT_USER_DEL_ERROR(60014,"您还没选择需要删除用户!"),
    TENANT_DEL_ERROR(60015,"您所选择删除租户已经初始化，无法执行删除!"),
    TENANT_GROUP_LABEL_ERROR(60016,"租户分组已存在,无法执行保存!"),
    TENANT_GROUP_NOT_FOUND(60017,"读取租户分组信息失败!"),
    TENANT_GROUP_CHLID_HAS(60018,"您要删除分组存在子节点，无法删除!"),
    TENANT_GROUP_HAS_TENNAT(60019,"您要删除分组存在租户信息，无法删除!"),
    TENANT_GROUP_DEL_EMPTY(60020,"请选择删除租户分组信息!"),
    TENANT_GROUP_DEL_HAS_TENANT_ERROR(60021,"您删除租户分组,已经配置租户信息不允许删除!"),
    TENANT_NAME_EXITE_ERROR(60022,"租户名称已经存在,不能存在重复租户名"),
    TENANT_LOCK_ERROR(60023,"锁定租户失败！"),
    TENANT_HAS_ROLE_ERROR(60024,"您初始化的租户已经执行过初始化,不能重复执行!"),
    TENANT_NOT_EXPIRED(60025,"企业租户还没到生效时间!"),
    TENANT_DEL_EMPTY(60026,"请选择删除租户信息!"),
    TENANT_DEL_HAS_USER_ERROR(60027,"您删除租户,已经初始化用户信息不允许删除!"),

    //在线相关
    ONLINE_SAVE_ERROR(70000,"更新在线信息失败!"),
    ONLINE_CLEAR_ERROR(70001,"清除在线信息失败!"),
    //登录日志
    LOGINLOG_SAVE_ERROR(80000,"保存登录日志失败!"),
    //菜单
    MENU_NO_APPLICATION(90000,"创建顶层菜单必须选择所属应用!"),
    MENU_NO_PARENT_ERROR(90001,"读取父菜单失败！"),
    MENU_HAS_CHILD_ERROR(90002,"该菜单存在子菜单，无法执行删除"),


    CERTIFICATE_NO_KEY_BASE64(4000,"证书内容BASE64码不能为空"),
    CERTIFICATE_NO_KEY_PWD(4001,"证书密码不能为空"),
    CERTIFICATE_NO_TRUST_BASE64(4002,"信任库BASE64码不能为空"),
    CERTIFICATE_NO_TRUST_PWD(4003,"信任库密码不能为空"),
    CERTIFICATE_HAS_PRODUCT(4004,"您所选择证书已经发布,不能执行删除!"),
    CERTIFICATE_FILEPART_ERROR(4005,"您上传证书文件有误!"),
    CERTIFICATE_NO_CERT_ERROR(4006,"MQTT服务启动失败，读取证书失败!"),
    CERTIFICATE_TYPE_ERROR(4007,"您所选择的证书类型有误!"),
    CERTIFICATE_NO_ERROR(4008,"证书读取失败!"),

    NETWORK_NO_FOUND_ERROR(5000,"读取网络组件数据失败!"),
    NETWORK_SAME_NAME_ERROR(5000,"该名网络组件已存在!"),

    GATEWAY_NO_FOUND_ERROR(6000,"读取网关数据失败!"),
    GATEWAY_STATE_ENABLE_ERROR(6001,"您所启动的网关被设置了停用状态!"),

    DEVICE_METADATA_HAS_ERROR(7000,"设备还没配置数据端点!"),
    SESSION_SEND_MESSAGE_NONE_ERROR(7001,"平台下发会话服务消息读取失败!"),
    DEVICE_NO_FIND_ERROR(7002,"读取设备失败!"),
    DEVICE_BIN_ISNULL_ERROR(7003,"绑定子设备信息为空!"),
    DEVICE_BIN_PARENT_ISNULL_ERROR(7004,"绑定父设备信息为空!"),
    EQUIPMENT_CATE_HAS_ERROR(7005,"设备分类已经存在,不能重复添加!"),
    EQUIPMENT_CATE_HAS_U_ERROR(7006,"设备分类已经存在,保存失败!"),
    EQUIPMENT_CATE_DEL_ERROR(7007,"您还没选择删除设备分类"),
    EQUIPMENT_CATE_HAS_EQUIPMENT_ERROR(7008,"要删除设备分类已经存在设备,无法删除!"),
    EQUIPMENT_CODE_HAS_ERROR(7009,"设备编码已经存储,不能重复添加!"),
    EQUIPMENT_DEL_ERROR(7010,"您还没选择删除设备!"),
    EQUIPMENT_STATE_UNKONW_ERROR(7011,"设备已在使用，不能执行删除!"),
    EQUIPMENT_DATAPOINT_HAS_ERROR(7012,"设备已存在数据端点,不能通过模板添加，请先删除存在数据端点!"),
    EQUIPMENT_NONE_ERROR(7013,"读取设备数据失败!"),
    EQUIPMENT_ADDPOINT_ERROR(7014,"您选择数据端点模板没有对应的数据点!"),


    DATAPOINT_CATE_DEL_NONE_ERROR(8000,"您还没选择删除数据端点分类!"),
    DATAPOINT_CATE_HAS_TEMPLATE_ERROR(8001,"您所选择删除分类已存在模板数据,不能执行删除!"),
    DATAPOINT_CATE_NAME_HAS_ERROR(8002,"您添加的分类名已经存在，不能重复添加"),
    DATAPOINT_TEMPLATE_NAME_HAS_ERROR(8003,"您添加的模板名已经存在，不能重复添加!"),
    DATAPOINT_TEMPLATE_CATE_NONE_ERROR(8004,"您还没选择模板分类，请先选择模板分类!"),
    DATAPOINT_TEMPLATE_HAS_POINT_ERROR(8005,"您所删除模板存在数据点数据，不能执行删除!"),
    DATAPOINT_NONE_TEMPLATE_ERROR(8006,"您添加数据点没选择模板信息!"),
    DATAPOINT_TEMPLATE_NONE_ERROR(8011,"读取数据端点模板失败！"),
    DATAPOINT_HAS_TAG_ERROR(8007,"数据端点已经存在，不能执行!"),
    DATAPOINT_HAS_NAME_ERROR(8008,"数据端点名称已经存在，不能执行!"),
    DATAPOINT_HAS_ENAME_ERROR(8009,"数据端点英文名已经存在，不能执行!"),
    DATAPOINT_DEL_NO_ERROR(8010,"您还没选择删除数据点，不能执行!"),

    PROJECT_HAS_SAME_ERROR(9000,"您新增项目已经存在，不能重复添加！"),
    PROJECT_NO_DEL_ERROR(9001,"您还没选择需要删除的项目"),
    PROJECT_HAS_EQ_ERROR(9002,"您所删除的项目已经存在设备,无法执行删除!"),
    ORG_ADD_NULL(9003,"请先输入需要新增组织!"),
    ORG_NAME_HAS_THE_SAME(9004,"组织名称已经存在,不能重复!"),
    ORG_PARENT_NULL(9005,"读取上级组织有误!"),
    ORG_HAS_CLID_OVER(9006,"您所添加下级超过限制,只能添加4层级!"),
    ORG_UPDATE_NULL(9007,"请输入修改单位组织信息！"),
    ORG_DEL_NOTFOUND_ERROR(9008,"请先选择要删除单位组织信息!"),
    ORG_DEL_HAS_CHILD_ERROR(9009,"您删除单位组织%s,已经配置下级不允许删除!"),
    ORG_DEL_HAS_FUNCTIONS_ERROR(9010,"您删除单位组织%s,已经配置用户不允许删除!"),
    ORG_ROOT_ERROR(9011,"您删除的单位组织是集团顶层不允许删除!"),
    ORG_GET_PARAMS_NULL_ERROR(9012,"查询条件为空，无法执行查询操作!"),
    ORG_ADD_COMPANY_ERROR(9013,"部门下不允许添加公司数据!"),

    EQUIPMENT_RULE_TRIGGER_ERROR(10000,"触发设备读取失败!"),
    EQUIPMENT_RULE_NO_RULEMODE_ERROR(10001,"没能读取规则数据!"),
    EQUIPMENT_RULE_NO_TRIGGER_ERROR(10002,"触发规则没设置触发条件!%s"),
    EQUIPMENT_RULE_NO_TRIGGER_DATA_ERROR(10003,"触发规则没有传入触发数据!"),
    EQUIPMENT_RULE_NO_TRIGGER_ACTION_ERROR(10004,"触发规则没有定义触发执行任务!"),
    EQUIPMENT_EVENT_NOERROR(10005,"设备没定义您所上报的事件,无法执行保存!"),
    EQUIPMENT_TYPE_SAVE_NOERROR(10006,"请先填写设备类型信息!"),
    EQUIPMENT_TYPE_HAS_THE_SAME(10007,"设备类型已经存在,不能重复执行!"),
    EQUIPMENT_TYPE_PARENT_NULL(10008,"读取上级设备类型有误!"),
    EQUIPMENT_TYPE_HAS_CLID_OVER(10009,"您所添加下级超过限制,只能添加4层级!"),
    EQUIPMENT_TYPE_UPDATE_NULL(10010,"请输入修改设备类型信息！"),
    EQUIPMENT_TYPE_DEL_NOTFOUND_ERROR(10011,"请先选择要删除设备类型信息!"),
    EQUIPMENT_TYPE_DEL_HAS_CHILD_ERROR(10012,"您删除设备类型%s,已经配置下级不允许删除!"),
    EQUIPMENT_TYPE_GET_PARAMS_NULL_ERROR(10013,"查询条件为空，无法执行查询操作!"),
    //设备品牌
    EQUIPMENT_BRANDS_CODE_HAS_ERROR(10014,"设备品牌编码已存在!"),
    EQUIPMENT_BRANDS_UPDATE_NULL_ERROR(10015,"请输入设备品牌编码!"),
    EQUIPMENT_BRANDS_NAME_HAS_ERROR(10016,"设备品牌名称已存在!"),
    EQUIPMENT_BRANDS_DEL_ERROR(10017,"请选择要删除设备品牌!"),
    EQUIPMENT_BRANDS_DEL_HAS_EQUIPMENT_ERROR(10018,"您删除设备品牌%s,已经配置设备不允许删除!"),
    //设备品牌分组
    EQUIPMENT_BRAND_GROUP_NAME_HAS_ERROR(10019,"设备品牌分组名称已存在!"),
    EQUIPMENT_BRAND_GROUPS_DEL_ERROR(10020,"请选择要删除设备品牌分组!"),
    EQUIPMENT_BRANDS_GROUPS_DEL_HAS_EQUIPMENT_ERROR(10021,"您删除设备品牌分组%s,已经配置品牌不允许删除!"),
    EQUIPMENT_BRANDS_PAGE_NO_GROUPID_ERROR(10022,"请选择品牌分组!"),
    EQUIPMENT_BRANDS_ES_HAS_CHINESS_ERROR(10023,"设备品牌英文名不能包含中文!"),
    EQUIPMENT_BRANDS_CODE_IS_NUMBER_ERROR(10024,"设备品牌代码不能包含中文!"),

    MSG_NOTIFY_NOT_SUPER_ERROR(11000,"不支持的消息通知类型!"),
    MSG_APP_PUSH_ERROR(11001,"APP推送消息异常:%s"),
    MSG_APP_PUSH_NOTARGET_ERROR(11002,"APP推送推送设备没有指定，target参数有误"),
    MSG_SMS_PUSH_NO_PHONE_ERROR(11003,"短信推送电话号码没有指定，推送电话参数有误"),
    MSG_SMS_PUSH_NO_PAYLOAD_ERROR(11004,"未能读取SMS推送数据信息,无法执行推送"),
    MSG_WX_MP_PUSH_NO_RECIVER_ERROR(11005,"微信公众号推送没有指定接收者,无法执行推送"),
    MSG_WX_MP_PUSH_NO_TEMPID_ERROR(11006,"微信公众号推送模板读取失败,无法执行推送"),
    MSG_WX_MP_PUSH_NO_DATA_ERROR(11007,"微信公众号推送数据读取失败,无法执行推送"),
    MSG_WX_MP_PUSH_NO_TEMPLATE_ERROR(11008,"没有传入微信公众号推送数据，无法执行推送"),

    FILES_UPLOAD_PARAMS_ERROR(12000,"附件上传参数不符,无法上传!"),
    FILES_UPLOAD_ERROR(12001,"附件上传失败!"),
    FILES_UPLOAD_NO_ERROR(12002,"请上传有效文件!"),
    FILES_DEL_NO_ERROR(12003,"请选择删除的附件!"),
    ;


    private final int code;
    private String msg;

    BizExceptionCode(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    @Override
    public int getCode() {
        return code;
    }

    @Override
    public String getMsg() {
        return msg;
    }


    public BizExceptionCode build(String msg, Object... param) {
        this.msg = String.format(msg, param);
        return this;
    }

    public BizExceptionCode param(Object... param) {
        msg = String.format(msg, param);
        return this;
    }
}
